JiGeng
创建时间:2022年11月21日 03:31
编辑时间:2022年11月21日 03:39
TRUNCATE 和 DELETE 的使用与区别
***
#清空表数据(新建表,再完全删除旧表)
TRUNCATE TABLE tb_xxx;
#检查清空后是否有数据残留
SELECT * FROM tb_xxx;
为0
***删除表里所有数据
DELETE from tb_xxx;
或delete 具体数据条。。。
删除后ID不连续问题(两种命令,建议第二个):
alter table tablename auto_increment = 1;
alter table tablename ADD id INT NOT NULL PRIMARY KEY AUTO_INCREMENT FIRST;
TRUNCATE 和 DELETE 的区别
从逻辑上说,TRUNCATE 语句与 DELETE 语句作用相同,但是在某些情况下,两者在使用上有所区别。
DELETE 是 DML 类型的语句;TRUNCATE 是 DDL 类型的语句。它们都用来清空表中的数据。
DELETE 是逐行一条一条删除记录的;TRUNCATE 则是直接删除原来的表,再重新创建一个一模一样的新表,而不是逐行删除表中的数据,执行数据比 DELETE 快。因此需要删除表中全部的数据行时,尽量使用 TRUNCATE 语句, 可以缩短执行时间。
DELETE 删除数据后,配合事件回滚可以找回数据;TRUNCATE 不支持事务的回滚,数据删除后无法找回。
DELETE 删除数据后,系统不会重新设置自增字段的计数器;TRUNCATE 清空表记录后,系统会重新设置自增字段的计数器。
DELETE 的使用范围更广,因为它可以通过 WHERE 子句指定条件来删除部分数据;而 TRUNCATE 不支持 WHERE 子句,只能删除整体。
DELETE 会返回删除数据的行数,但是 TRUNCATE 只会返回 0,没有任何意义。